<?php 

App::uses('CakeEmail', 'Network/Email');
App::import('Vendor', 'PHPExcel/Classes/PHPExcel');

class ApiController extends AppController{
		
	
	public $uses = array('User','Persona');	  
	
	public function beforeFilter()
	{
		parent::beforeFilter();
		$this->Auth->allow('sendEmailCantVacaciones',
							'sendEmailPlanillaBeneficio',
							'sendEmailPlanillaVacaciones',
							'sendEmailInfoReservacion',
							'sendEmailPlanillaRecibo',
							'sendEmailCartaAval',
							'sendEmailSolicitudCompra',
							'sendEmailCartaTrabajo',
							'sendEmailLostPassword',
							'sendEmailLostUsername',
							'sendEmailSolicitudAdmin',
							'sendEmailAcumBeneficio');
	
	}
	
	function generateRandomString($length = 10) 
	{
    	$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    	$randomString = '';
    	for ($i = 0; $i < $length; $i++) 
    	{
        	$randomString .= $characters[rand(0, strlen($characters) - 1)];
    	}
    	return $randomString;
	}
	
	public function sendEmailSolicitudAdmin ($username_str,$id_solicitud_admin)
	{
		//try
		//{
			$this->loadModel("User");
			$usuario = $this->getInfoPersona($username_str);
			$email_empresas = $this->getInfoEmails($username_str);
			$departamento = $this->getDepartamento($usuario[0]['P']['id']);
			$solicitud = $this->getSolicitudAdmin($id_solicitud_admin);
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_solicitud_admin');

			$Email->viewVars(array(
										'username' => $username_str,
										'nombre_persona' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'telefono_persona_1' => $usuario[0]['P']['nro_tlf_persona_1'],
										'telefono_persona_2' => $usuario[0]['P']['nro_tlf_persona_2'],
										'correo_electronico' => $usuario[0]['P']['email_persona'],
										'nombre_departamento' => $departamento[0]['D']['nombre_departamento'],
										'solicitud' => $solicitud
									)
							);
			$mailTo = $email_empresas[0]['CE']['email_administrador'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			//$Email->bcc($usuario[0]['P']['email_persona']);
			$Email->to($mailTo);
			
			$Email->subject('Solicitud de Admin Nro. '.$id_solicitud_admin);
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	public function sendEmailAcumBeneficio ($username_str,$id_beneficio)
	{
		//try
		//{
			$this->loadModel("User");
			$usuario = $this->getInfoPersona($username_str);
			$email_empresas = $this->getInfoEmails($username_str);
			$departamento = $this->getDepartamento($usuario[0]['P']['id']);
			$beneficio = $this->getBeneficioAdm($id_beneficio, $username_str);
			
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_acum_beneficio');

			$Email->viewVars(array(
										'username' => $username_str,
										'nombre_persona' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'telefono_persona_1' => $usuario[0]['P']['nro_tlf_persona_1'],
										'telefono_persona_2' => $usuario[0]['P']['nro_tlf_persona_2'],
										'correo_electronico' => $usuario[0]['P']['email_persona'],
										'nombre_departamento' => $departamento[0]['D']['nombre_departamento'],
										'beneficio' => $beneficio[0]['BA']['nombre_beneficio_administrativo']
									)
							);
			$mailTo = $email_empresas[0]['CE']['email_nomina'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			//$Email->bcc($usuario[0]['P']['email_persona']);
			$Email->to($mailTo);
			
			$Email->subject('Solicitud de Cantidad Acumulada por '.$beneficio[0]['BA']['nombre_beneficio_administrativo'].'.');
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	public function sendEmailCantVacaciones ($username_str)
	{
		//try
		//{
			$this->loadModel("User");
			$usuario = $this->getInfoPersona($username_str);
			$email_empresas = $this->getInfoEmails($username_str);
			$departamento = $this->getDepartamento($usuario[0]['P']['id']);
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_vacaciones');

			$Email->viewVars(array(
										'username' => $username_str,
										'nombre_persona' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'telefono_persona_1' => $usuario[0]['P']['nro_tlf_persona_1'],
										'telefono_persona_2' => $usuario[0]['P']['nro_tlf_persona_2'],
										'correo_electronico' => $usuario[0]['P']['email_persona'],
										'nombre_departamento' => $departamento[0]['D']['nombre_departamento']
									)
							);
			$mailTo = $email_empresas[0]['CE']['email_recursos_humanos'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->bcc($usuario[0]['P']['email_persona']);
			$Email->to($mailTo);
			
			$Email->subject('Solicitud de Vacaciones');
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	public function sendEmailInfoReservacion ($username_str,$id_reserva)
	{
		//try
		//{
			//$dir_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\vacaciones\\planillas\\planilla_vacaciones.xls';
			
			$this->loadModel("User");
			$elOcio = $this->User->query(
											'SELECT R . * , O . * , TR . * , P. *
														FROM reservaciones R, users U, 
														ocios O, tipo_status TR,
														personas P
														WHERE R.persona_id = U.persona_id
														AND R.tipo_reservaciones_id = TR.id
														AND R.ocio_id = O.id
														AND P.id = U.persona_id
														AND R.id = '.$id_reserva.' 
														AND U.username =  "'.$username_str.'"'
										);
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_reservacion');
			$Email->viewVars(array(
										'fecha_emision' => date('d/m/Y'),
										'username' => $username_str,
										'nombre_usuario' => $elOcio[0]['P']['nombre_persona_1'].', '.$elOcio[0]['P']['apellido_persona_1'],
										'correo_electronico' => $elOcio[0]['O']['email_ocio'],
										'nombre_ocio' => $elOcio[0]['O']['nombre_establecimiento_ocio'],
										'numero_reserva' => $id_reserva,
										'fecha_reservacion' => date('d/m/Y',strtotime($elOcio[0]['R']['fecha_selec_reservacion'])),
										'hora_inic' => $elOcio[0]['R']['hora_inic_reservaciones'],
										'hora_fin' => ($elOcio[0]['R']['hora_fin_reservaciones'] == null ? "?" : $elOcio[0]['R']['hora_fin_reservaciones']),
										'descripcion_adicional' =>	$elOcio[0]['R']['descripcion_reservaciones'], 
										'telefono_ocio_1' => $elOcio[0]['O']['nro_tlf_ocio_1'],
										'telefono_ocio_2' => $elOcio[0]['O']['nro_tlf_ocio_2']
									)
							);
			$mailTo = $elOcio[0]['O']['email_ocio'];
			$Email->from(array('ftrompiz@corpmobilesolutions.com' => 'Administrador'));
			$Email->bcc($elOcio[0]['P']['email_persona']);
			$Email->to($mailTo);
			$Email->subject('Solicitud de la Reservacion Nro. '.$id_reserva);
				
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	
	public function sendEmailPlanillaVacaciones ($username_str,$cantidad,$fecha_inicio,$fecha_tope)
	{
		//try
		//{
			//$dir_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\vacaciones\\planillas\\planilla_vacaciones.xls';
			
			
			$dir_archivo =	$_SERVER['DOCUMENT_ROOT'].'/BackEndRecursosHumanos/app/webroot/files/vacaciones/planillas/';
			$nombre_dir_archivo = 'planilla vacaciones.xlsx';
			$arreglo_fecha_de_fin = $this->getFechaFin($username_str,$fecha_inicio,$cantidad);
			$date_fecha_inic = date('m/d/Y',$fecha_inicio);
			$dir_archivo_enviar = $this->setDatosDePlanillaVacaciones($dir_archivo,$nombre_dir_archivo,$username_str,$cantidad,
									$date_fecha_inic,$arreglo_fecha_de_fin['dia_fin_vac'],$arreglo_fecha_de_fin['dia_reintegro']);
			
			$Email = new CakeEmail();
			
			$usuario = $this->getInfoPersona($username_str);
			$Email->config('default');
			$Email->emailFormat('html','text');	
			$Email->template('formato_planilla_vacaciones');
			$Email->attachments(array($dir_archivo_enviar));
			$Email->viewVars(array(
										'username' => $username_str,
										'nompre_persona' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'cantidad' => $cantidad,
										'fecha_inicio' => date('d/m/Y',$fecha_inicio),
										'fecha_fin' => date('d/m/Y',strtotime($arreglo_fecha_de_fin['dia_fin_vac'])),
										'fecha_reintegro' => date('d/m/Y',strtotime($arreglo_fecha_de_fin['dia_reintegro'])),
										'fecha_tope' => date('d/m/Y',$fecha_tope)
									)
							);
			$mailTo = $usuario[0]['P']['email_persona'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->to($mailTo);
			$Email->subject('Planilla de Solicitud de Vacaciones');
	
			$Email->send('My message');
			
			$file = new File($dir_archivo_enviar);
	       		
       		if($file->exists())
       			$file->delete();
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	
	public function sendEmailPlanillaBeneficio ($id_benefiicio,$username_str)
	{
		//try
		//{
			//$dir_base_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\beneficios_administrativos_sede\\planillas\\';
			$email_empresas = $this->getInfoEmails($username_str);
			
			$beneficio = $this->getBeneficioAdm($id_benefiicio, $username_str);
			$usuario = $this->getInfoPersona($username_str);
			
			$dir_base_archivo =	$_SERVER['DOCUMENT_ROOT'].'/BackEndRecursosHumanos/app/webroot/files/beneficios_administrativos_sede/planillas/';
			$dir_archivo = $dir_base_archivo.$id_benefiicio.'/';
			$dir_archivo_enviar = "";
			
			
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_planilla_beneficio');
			$mailTo = '';
			$mailToReply = '';
			
			if ($id_benefiicio == 1) // si es prestaciones
			{
				$dir_archivo_enviar = $this->setDatosDePlanillaPrestaciones($dir_archivo,
																				$beneficio[0]['BAS']['direcciones_planilla_beneficio'],
																				$username_str);
				$mailTo = $usuario[0]['P']['email_persona'];
			}
			elseif ($id_benefiicio == 2) // si es ley politica
			{
				$dir_archivo_enviar = $this->setDatosDePlanillaLeyPolitica($dir_archivo,
																			$beneficio[0]['BAS']['direcciones_planilla_beneficio'],
																			$username_str);
				$mailTo = $email_empresas[0]['CE']['email_nomina'];
				$mailToReply = $usuario[0]['P']['email_persona'];
			}
			
			$Email->attachments(array($dir_archivo_enviar));
			$Email->viewVars(array(
										'beneficio_nombre' => $beneficio[0]['BA']['nombre_beneficio_administrativo'],
										'correo_electronico' => $mailTo
									)
							);
			
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			
			
			if ($mailToReply != '')
			{
				$Email->bcc($mailToReply);
				$Email->subject('Carta de '.$beneficio[0]['BA']['nombre_beneficio_administrativo']);
			}
			else
			{
				$Email->subject('Planilla de Solicitud de '.$beneficio[0]['BA']['nombre_beneficio_administrativo']);
			}
			$Email->to($mailTo);
	
			$Email->send('My message');
			
			$file = new File($dir_archivo_enviar);
	       		
       		if($file->exists())
       			$file->delete();
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	public function sendEmailSolicitudCompra($username_str, $id_solicitud_compra)
	{
		$Email = new CakeEmail();
		$Email->config('default');
		$Email->emailFormat('html','text');
		$Email->template('formato_compra');
		$usuario = $this->getInfoPersona($username_str);
		$solicitud_compra = $this->getInfoCompra($id_solicitud_compra);
		$Email->viewVars(array(
									'detalle_compras' => $solicitud_compra,
								)
						);
		
		$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
		$Email->to($usuario[0]['P']['email_persona']);
		$Email->subject('Solicitud de Compra Nro. '.$id_solicitud_compra);
		$Email->send('My message');
	}
	
	public function sendEmailCartaTrabajo ($username_str)
	{
		//try
		//{
			$this->loadModel("User");
			$usuario = $this->getInfoPersona($username_str);
			$departamento = $this->getDepartamento($usuario[0]['P']['id']);
			$email_empresas = $this->getInfoEmails($username_str);
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_carta_trabajo');

			$Email->viewVars(array(
										'username' => $username_str,
										'nombre_persona' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'telefono_persona_1' => $usuario[0]['P']['nro_tlf_persona_1'],
										'telefono_persona_2' => $usuario[0]['P']['nro_tlf_persona_2'],
										'correo_electronico' => $usuario[0]['P']['email_persona'],
										'nombre_departamento' => $departamento[0]['D']['nombre_departamento']
									)
							);
			$mailTo = $email_empresas[0]['CE']['email_recursos_humanos'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->bcc($usuario[0]['P']['email_persona']);
			$Email->to($mailTo);
			
			$Email->subject('Solicitud de la Carta de Trabajo');
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	
	public function sendEmailCartaAval ($username_str,$id_poliza,$id_familiar,$id_hospital,$nombre_operation,$monto)
	{
		//try
		//{
			//$dir_base_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\beneficios_administrativos_sede\\planillas\\';
			
			$dir_base_archivo =	$_SERVER['DOCUMENT_ROOT'].'/BackEndRecursosHumanos/app/webroot/files/poliza/planillas/';
			$dir_archivo = $dir_base_archivo;
			$nombre_direccion_planilla = 'planilla carta aval.xlsx';
			$dir_archivo_enviar = $this->setDatosDePlanillaCartaAval($dir_archivo,$nombre_direccion_planilla,$username_str,$id_familiar,$id_hospital,$nombre_operation,$monto);
			
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_planilla_carta_aval');
			$Email->attachments(array($dir_archivo_enviar));
			$usuario = $this->getInfoPersona($username_str);
			$poliza = $this->getPolizaById($id_poliza);
			$corredor = $this->getCorredor($poliza[0]['P']['seguro_id']);
			$familiar = $this->getFamiliarById($id_familiar);
			$hospital = $this->getHospitalById($id_hospital);
			$Email->viewVars(array(
										'nombre_persona_completo' => $usuario[0]['P']['apellido_persona_1'].', '.$usuario[0]['P']['nombre_persona_1'],
										'numero_poliza' => $poliza[0]['P']['numero_poliza'],
										
										'nombre_hospital' => $hospital[0]['H']['nombre_hospital'],
										'nombre_operacion' => $nombre_operation,
										'monto' => $monto,
										'nombre_beneficiario' => $familiar[0]['F']['nombre_familiar_1'].' '.
																	$familiar[0]['F']['apellido_familiar_1'],
										
										'email_persona' => $usuario[0]['P']['email_persona'],
										'telefono_persona_1' => $usuario[0]['P']['nro_tlf_persona_1'],
										'telefono_persona_2' => $usuario[0]['P']['nro_tlf_persona_2'],
										
										
										
									)
							);
			
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->bcc($usuario[0]['P']['email_persona']);
			$Email->to($corredor[0]['S']['email_corredor']);
			$Email->subject('Solicitud de Carta Aval');
			$Email->send('My message');
			
			$file = new File($dir_archivo_enviar);
	       		
       		if($file->exists())
       			$file->delete();
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	
	public function sendEmailPlanillaRecibo ($id_recibo,$numero_recibo,$username_str)//$nombre_usuario)
	{
		//try
		//{
			//$dir_base_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\beneficios_administrativos_sede\\planillas\\';
			$dir_base_archivo =	$_SERVER['DOCUMENT_ROOT']."/BackEndRecursosHumanos/app/webroot/files/recibos/";
			$nombre_archivo_recibo = $numero_recibo.'-'.$id_recibo.'.txt';
			$dir_archivo = $dir_base_archivo.$id_recibo.'/'.$nombre_archivo_recibo;
			
			$usuario = $this->getInfoPersona($username_str);
			
			$mailTo = $usuario[0]['P']['email_persona'];
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');
			$Email->template('formato_planilla_recibo');
			$Email->attachments(array($dir_archivo));
			$Email->viewVars(array(
										'username' => $username_str,
										'numero_recibo' => $numero_recibo
									)
							);
			
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->to($mailTo);
			$Email->subject('Copia del Recibo Nro.'.$numero_recibo);
	
			$Email->send('My message');
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}

	public function sendEmailLostPassword ($username_str)
	{
		//try
		//{
			//$dir_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\vacaciones\\planillas\\planilla_vacaciones.xls';
			
			$usuario_info = $this->getTodaInformacionPersonal($username_str);
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');	
			$Email->template('formato_lost_password');
			$Email->viewVars(array(
										'password_nuevo' => '123456789',
										
									)
							);
			$mailTo = $usuario_info[0]['P']['email_persona'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->to($mailTo);
			$Email->subject('Solicitud de Recuperacion de Password');
	
			$Email->send('My message');
			
			
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}
	public function sendEmailLostUsername ($username_str)
	{
		//try
		//{
			//$dir_archivo =	'D:\\xampp\\htdocs\\BackEndRecursosHumanos\\app\\webroot\\files\\vacaciones\\planillas\\planilla_vacaciones.xls';
			
			$usuario_info = $this->getTodaInformacionPersonal($username_str);
			
			$Email = new CakeEmail();
			$Email->config('default');
			$Email->emailFormat('html','text');	
			$Email->template('formato_lost_username');
			$Email->viewVars(array(
										'nombre_usuario' => $usuario_info[0]['U']['username'],
										'correo_electronico' => $usuario_info[0]['P']['email_persona'],
										
									)
							);
			$mailTo = $usuario_info[0]['P']['email_persona'];
			$Email->from(array('adhuresourcesmobmedia@gmail.com' => 'Administrador'));
			$Email->to($mailTo);
			$Email->bcc($mailTo);
			$Email->subject('Solicitud de Recuperacion de Usuario');
	
			$Email->send('My message');
			
		
		/*}
		catch (Exception $ee)
		{
			
		}
		*/
		
	}


	public function setDatosDePlanillaVacaciones($dir_base,$nombre_archivo,$usuario,$cantidad_dias,
													$fecha_inic,$fecha_fin,$fecha_reintegro)
	{
		$excel2 = PHPExcel_IOFactory::load($dir_base.$nombre_archivo);
		
		$info_usaurio = $this->getTodaInformacionPersonal($usuario);
		
		debug($info_usaurio);
		
		$dir_copia = $dir_base.'planilla_vacaciones_'.$info_usaurio[0]['P']['apellido_persona_1'].'_'.
							$info_usaurio[0]['P']['nombre_persona_1'].'.xlsx';
			
		$time_fecha_inic = strtotime($fecha_inic);
		$time_fecha_fin = strtotime($fecha_fin);
		$time_fecha_reintegro = strtotime($fecha_reintegro);
		$time_fecha_ingreso = strtotime($info_usaurio[0]['DP']['fecha_inic_persona_departamento']);
		
		
		$excel2->setActiveSheetIndex(0)	->setCellValue('B7', $info_usaurio[0]['P']['apellido_persona_1'].
														($info_usaurio[0]['P']['apellido_persona_2'] == null ? "" 
														: " ".$info_usaurio[0]['P']['apellido_persona_2']).
														" ".$info_usaurio[0]['P']['nombre_persona_1'].
														($info_usaurio[0]['P']['nombre_persona_2'] == null ? "" 
														: " ".$info_usaurio[0]['P']['nombre_persona_2']))           

										->setCellValue('J7', $info_usaurio[0]['P']['ci_persona'])         
		
		  								->setCellValue('B10', $info_usaurio[0]['S']['nombre_sede'])       

										->setCellValue('J10', $info_usaurio[0]['D']['nombre_departamento'])         
		
		  								->setCellValue('B13', $info_usaurio[0]['P']['nro_tlf_persona_1'])       
		
										->setCellValue('F13', ($info_usaurio[0]['P']['nro_tlf_persona_2'] == null ? "NO APLICA" 
																: "".$info_usaurio[0]['P']['nro_tlf_persona_2']))         

										->setCellValue('J13', ($info_usaurio[0]['P']['email_persona'] == null ? "NO APLICA" 
																: $info_usaurio[0]['P']['email_persona']))
										
										->setCellValue('G16', $cantidad_dias)    
										
										
										->setCellValue('B16', date('d',$time_fecha_ingreso))       
		
										->setCellValue('C16', date('m',$time_fecha_ingreso))         

										->setCellValue('D16', date('Y',$time_fecha_ingreso))
										
										
										->setCellValue('I16', date('d',$time_fecha_inic))       
		
										->setCellValue('J16', date('m',$time_fecha_inic))         

										->setCellValue('K16', date('Y',$time_fecha_inic))
										
										
										->setCellValue('L16', date('d',$time_fecha_fin))       
		
										->setCellValue('M16', date('m',$time_fecha_fin))         

										->setCellValue('N16', date('Y',$time_fecha_fin))
										
										
										->setCellValue('O16', date('d',$time_fecha_reintegro))       
		
										->setCellValue('P16', date('m',$time_fecha_reintegro))         

										->setCellValue('Q16', date('Y',$time_fecha_reintegro))
										
										->setCellValue('B27', $info_usaurio[0]['P']['apellido_persona_1'].', '.
																		$info_usaurio[0]['P']['nombre_persona_1'])
										->setCellValue('J29', $info_usaurio[0]['SUP']['apellido_persona_1'].', '.
																		$info_usaurio[0]['SUP']['nombre_persona_1']);;
		
		//$excel2->save($dir_file);
		$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
		$objWriter->save($dir_copia);
		return $dir_copia;
	}
	public function setDatosDePlanillaPrestaciones($dir_base,$nombre_archivo,$usuario)
	{
		
		$excel2 = PHPExcel_IOFactory::load($dir_base.$nombre_archivo);
		
		$info_usaurio = $this->getTodaInformacionPersonal($usuario);
		
		$dir_copia = $dir_base.'planilla_prestacion_'.$info_usaurio[0]['P']['apellido_persona_1'].'_'.
							$info_usaurio[0]['P']['nombre_persona_1'].'.xlsx';
		
		$excel2->setActiveSheetIndex(0)	->setCellValue('B7', $info_usaurio[0]['P']['apellido_persona_1'].
														($info_usaurio[0]['P']['apellido_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['apellido_persona_2']).
														' '.$info_usaurio[0]['P']['nombre_persona_1'].
														($info_usaurio[0]['P']['nombre_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['nombre_persona_2']))           

										->setCellValue('J7', $info_usaurio[0]['P']['ci_persona'])         
		
		  								->setCellValue('B10', $info_usaurio[0]['S']['nombre_sede'])       

										->setCellValue('J10', $info_usaurio[0]['D']['nombre_departamento'])         
		
		  								->setCellValue('B13', $info_usaurio[0]['P']['nro_tlf_persona_1'])       
		
										->setCellValue('F13', ($info_usaurio[0]['P']['nro_tlf_persona_2'] == null ? "NO APLICA" 
																: $info_usaurio[0]['P']['nro_tlf_persona_2']))         

										->setCellValue('J13', ($info_usaurio[0]['P']['email_persona'] == null ? "NO APLICA" 
																: $info_usaurio[0]['P']['email_persona']));
		
		//$excel2->save($dir_file);
		$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
		$objWriter->save($dir_copia);
		return $dir_copia;
		
	}
	public function setDatosDePlanillaLeyPolitica($dir_base,$nombre_archivo,$usuario)
	{
		
		$excel2 = PHPExcel_IOFactory::load($dir_base.$nombre_archivo);
		
		$info_usaurio = $this->getTodaInformacionPersonal($usuario);
		
		$dir_copia = $dir_base.'carta_ley_politica_'.$info_usaurio[0]['P']['apellido_persona_1'].'_'.
							$info_usaurio[0]['P']['nombre_persona_1'].'.xlsx';
		
		$excel2->setActiveSheetIndex(0)	->setCellValue('B7', $info_usaurio[0]['P']['apellido_persona_1'].
														($info_usaurio[0]['P']['apellido_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['apellido_persona_2']).
														' '.$info_usaurio[0]['P']['nombre_persona_1'].
														($info_usaurio[0]['P']['nombre_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['nombre_persona_2']))           

										->setCellValue('B8', $info_usaurio[0]['P']['ci_persona']);
		
		//$excel2->save($dir_file);
		$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
		$objWriter->save($dir_copia);
		return $dir_copia;
		
	}
	public function setDatosDePlanillaCartaAval($dir_base,$nombre_archivo,$username,$id_familiar,$id_hospital,$nombre_operation,$monto)
	{
		
		$excel2 = PHPExcel_IOFactory::load($dir_base.$nombre_archivo);
		
		$info_usaurio = $this->getTodaInformacionPersonal($username);
		
		$dir_copia = $dir_base.'planilla_carta_aval_'.$info_usaurio[0]['P']['apellido_persona_1'].'_'.
							$info_usaurio[0]['P']['nombre_persona_1'].'.xlsx';
		
		$info_familiar = $this->getFamiliarById($id_familiar);
		$info_hospital = $this->getHospitalById($id_hospital);
		
		$excel2->setActiveSheetIndex(0)	->setCellValue('B8', $info_usaurio[0]['P']['apellido_persona_1'].
														($info_usaurio[0]['P']['apellido_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['apellido_persona_2']).
														' '.$info_usaurio[0]['P']['nombre_persona_1'].
														($info_usaurio[0]['P']['nombre_persona_2'] == null ? "" : " ".$info_usaurio[0]['P']['nombre_persona_2']))           

										->setCellValue('J8', $info_usaurio[0]['P']['ci_persona'])         
		
		  								->setCellValue('B11', $info_usaurio[0]['S']['nombre_sede'])       

										->setCellValue('J11', $info_usaurio[0]['D']['nombre_departamento'])         
		
		  								->setCellValue('B14', $info_usaurio[0]['P']['nro_tlf_persona_1'])       
		
										->setCellValue('F14', ($info_usaurio[0]['P']['nro_tlf_persona_2'] == null ? "N/A" 
																: $info_usaurio[0]['P']['nro_tlf_persona_2']))         

										->setCellValue('J14', ($info_usaurio[0]['P']['email_persona'] == null ? "N/A" 
																: $info_usaurio[0]['P']['email_persona']))
										
										->setCellValue('B18', $info_familiar[0]['F']['apellido_familiar_1'].
														($info_familiar[0]['F']['apellido_familiar_2'] == null ? "" : " ".$info_familiar[0]['F']['apellido_familiar_2']).
														' '.$info_familiar[0]['F']['nombre_familiar_1'].
														($info_familiar[0]['F']['nombre_familiar_2'] == null ? "" : " ".$info_familiar[0]['F']['nombre_familiar_2']))
										
										->setCellValue('J18', $info_familiar[0]['F']['ci_familiar'])
										
										->setCellValue('B25', $nombre_operation)
										
										->setCellValue('B28', $info_hospital[0]['H']['nombre_hospital'])
										
										->setCellValue('L28', $monto)
										;
																
		
		//$excel2->save($dir_file);
		$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
		$objWriter->save($dir_copia);
		return $dir_copia;
		
	}
	public function sendEmail($mail, $subject, $texto, $formato)
	{

		$Email = new CakeEmail();
		$Email->config('default');
		$Email->emailFormat('html','text');
		$Email->template($formato);

		$Email->viewVars(array('value' => $texto));

		$Email->from(array('ftrompiz@corpmobilesolutions.com' => 'Administrador'));
		$Email->to($mail);
		$Email->subject($subject);

		$Email->send('My message');
		
		
     }
	
	
	
	/*************************************/
	
	public function getInfoCompra($id_compra)
	{
		$detalle_compras = $this->User->query(
															'SELECT *
																FROM solicitud_compras SC,
																detalle_solicitud_compras DSC,
																articulos A, users U,
																tipo_status TR
																WHERE DSC.solicitud_compra_id = SC.id
																AND DSC.articulo_id = A.id
																AND SC.persona_id = U.persona_id
																AND SC.tipo_status_id = TR.ID
																AND SC.id = '.$id_compra
														);
		return $detalle_compras;
	}
	
	public function getBeneficioAdm($id_beneficio,$username)
	{
		$beneficio = $this->User->query(
												"SELECT BA.*,BAS . * 
													FROM users U, departamento_personas DP, 
													beneficios_administrativos_sedes BAS,
													beneficios_administrativos BA
													WHERE U.persona_id = DP.persona_id
													AND DP.sede_id = BAS.sede_id
													AND BA.id = BAS.beneficios_administrativos_id
													AND BA.id = ".$id_beneficio."
													AND U.username =  '".$username."'"
					
										);
		return $beneficio;
	}
	
	public function getInfoEmails($username)
	{
		$emails = $this->User->query(
										'SELECT *
											FROM configuracion_emails CE, users U, departamento_personas DPP
											WHERE U.username = "'.$username.'" AND
											DPP.persona_id = U.persona_id AND
											DPP.sede_id = CE.sede_id AND
											DPP.fecha_fin_persona_departamento IS NULL'
									);
		return $emails;
	}
	public function getSolicitudAdmin($id_solicitud)
	{
		$solicitud_admin = $this->User->query(
												'SELECT *
													FROM admin_solicitudes ADS, 
													tipo_solicitud_admins TSA
													WHERE ADS.tipo_solicitud_admin_id = TSA.id
													AND ADS.id = '.$id_solicitud
													
											);
		return $solicitud_admin;
	}
	public function getFechaFin($username,$fecha_inicio_selec,$cantidad_selec)
	{
			
		$fecha_inicio_del_ano = date('Y-m-d',$fecha_inicio_selec);
		$fecha_fin_del_ano = date('Y-m-t', strtotime ( '+3 month' , $fecha_inicio_selec));
		
		$tipo_evento_nombre = "Feriado";
		
		$eventos_feriados = $this->User->query(
													'SELECT E.* , ES.*, TE.*, S.*
														FROM users U, departamento_personas DP, 
														eventos_sedes ES, eventos E, 
														tipo_eventos TE, sedes S
														WHERE U.persona_id = DP.persona_id
														AND DP.sede_id = ES.sede_id
														AND S.id = ES.sede_id
														AND E.id = ES.evento_id
														AND E.tipo_evento_id = TE.id
														AND TE.nombre_tipo_evento = "'.$tipo_evento_nombre.'"
														AND U.username =  "'.$username.'"
														AND ((ES.fecha_inicio_evento
														BETWEEN  "'.$fecha_inicio_del_ano.'"
														AND  "'.$fecha_fin_del_ano.'")
														OR (ES.fecha_fin_evento
														BETWEEN  "'.$fecha_inicio_del_ano.'"
														AND  "'.$fecha_fin_del_ano.'")) 
														ORDER BY fecha_inicio_evento ASC'
												);
		
		$cantidad_dias_inico = 0;
		$dia_select = $fecha_inicio_del_ano;							
		$dia_select = date('Y-m-d', strtotime($dia_select . ' - 1 day'));
		$dia_fin = "";
		$dia_reintegro = "";
		while ($cantidad_dias_inico < $cantidad_selec+1) 
		{
			
			$dia_select = date('Y-m-d', strtotime($dia_select . ' + 1 day'));
			
			if ($cantidad_dias_inico < $cantidad_selec)
			{
				$dia_fin = $dia_select;
			}
			else 
			{
				$dia_reintegro = $dia_select;
			}
			
			$tiempo_dia_select = strtotime($dia_select);
			$bool = true;
			foreach ($eventos_feriados as $evento_feriado) 
			{
				
				$tiempo_selec_inic = strtotime($evento_feriado['ES']['fecha_inicio_evento']);
				$tiempo_selec_fin = strtotime($evento_feriado['ES']['fecha_fin_evento']);
				
				if ( $tiempo_dia_select >= $tiempo_selec_inic && 
						$tiempo_dia_select <= $tiempo_selec_fin)
				{
					$bool = false;
					break;
				}
				else 
				{
					
				}
			}
			if($this->isWeekend($tiempo_dia_select))
			{
				$bool = false;
			}
			if ($bool)
			{
				$cantidad_dias_inico = $cantidad_dias_inico + 1;
			}
		}
		$arreglo_fecha = array( 
								'dia_fin_vac' => $dia_fin,
								'dia_reintegro' => $dia_reintegro
							  );
		return ($arreglo_fecha);
		
	}
	
	function isWeekend($date) 
	{	
	    return (date('N', $date) >= 6);
	}
	public function getPolizaById($id_poliza)
	{
		$poliza = $this->User->query(
										'SELECT *
											FROM polizas P
											WHERE P.id ='.$id_poliza
									);
		return $poliza;
	}
	public function getHospitalById($id_hospital)
	{
		$hospital = $this->User->query(
										'SELECT *
											FROM hospitals H
											WHERE H.id ='.$id_hospital
									);
		return $hospital;
	}
	public function getFamiliarById($id_familiar)
	{
		$familiar = $this->User->query(
										'SELECT *
											FROM familiares F
											WHERE F.id ='.$id_familiar
									);
		return $familiar;
	}

	
	public function getCorredor($id_seguro)
	{
		$poliza = $this->User->query(
										'SELECT S.*
										FROM seguros S
										WHERE S.id = '.$id_seguro
										);
		return $poliza;
	}
	public function getTodaInformacionPersonal($username)
	{
		$this->loadModel('User');
		$usuario = $this->User->query(
											'SELECT *
												FROM users U, personas P,
												departamento_personas DP,
												departamentos D, sedes S,
												departamento_sedes DPS
												LEFT OUTER JOIN personas SUP ON SUP.id = DPS.persona_id
												WHERE U.username = "'.$username.'"
												AND U.persona_id = P.id
												AND DP.persona_id = P.id
												AND DP.sede_id = S.id
												AND DP.departamento_id = D.id
												AND DP.departamento_id = D.id
												AND DP.sede_id = S.id
												AND DP.departamento_sede_id = DPS.id'
										);
		return $usuario;
	}
	public function getDepartamento($persona_id)
	{
		$this->loadModel('User');
		$departamento = $this->User->query(
												'SELECT D.*
													FROM departamento_personas DPP, 
													departamentos D
													WHERE DPP.departamento_id = D.id
													AND DPP.persona_id = '.$persona_id
											);
		return $departamento;
	}
	public function getInfoPersona($username)
	{
		$this->loadModel('User');
		$usuario = $this->User->query(
										'SELECT P.*
										FROM users U, personas P
										WHERE U.persona_id = P.id 
										AND U.username = "'.$username.'"'
										);
		return $usuario;
						
	}
	
	public function getFamiliar($id_familiar)
	{
		$this->loadModel('User');
		$usuario = $this->User->query(
										'SELECT F.*
										FROM familiares F
										WHERE F.id = '.$id_familiar
										);
		return $usuario;
						
	}

	public function getHospital($id_hospital)
	{
		$this->loadModel('User');
		$usuario = $this->User->query(
										'SELECT H.*
										FROM hospitals H
										WHERE H.id = '.$id_hospital
										);
		return $usuario;
	}

	public function getInfoPersona1($username = null)
	{
		$usuario = $this->User->findByUsernameAndPassword($username,$password);
		
		$arreglo_json = array();
		
		if (is_null($usuario))
		{
			
		}
		else 
		{
			if (($usuario['User']['active_user'] == 1) && ($usuario['User']['tipo_cuenta_id'] != 1))
			{
				$datos_usuario = array();
				$datos_login = $this->Persona->query(
														"SELECT *
															FROM 
															CONFIGURACION_SISTEMAS CSI,
															CONFIGURACION_MODULOS CM,
															DEPARTAMENTO_PERSONAS DP,
															MODULO_SISTEMAS M,
															PERSONAS P,
															SEDES S,
															USERS U
															WHERE U.PERSONA_ID = P.ID 
															AND DP.PERSONA_ID = P.ID
															AND DP.SEDE_ID = S.ID
															AND S.CONFIGURACION_SISTEMA_ID = CSI.ID
															AND CM.CONFIGURACION_SISTEMA_ID = CSI.ID
															AND CM.MODULO_SISTEMA_ID = M.ID
															AND U.TIPO_CUENTA_ID = ".$usuario['User']['tipo_cuenta_id']." 
															AND U.ID = ".$usuario['User']['id']." 
															AND DP.FECHA_FIN_PERSONA_DEPARTAMENTO IS NULL"
													);
				
				array_push($datos_usuario, array(
													"id" => $datos_login[0]['U']['id'], 
													"username" => utf8_encode($datos_login[0]['U']['username']),
													"tipo_cuenta" => $datos_login[0]['U']['tipo_cuenta_id']
												)
							);
				//$usuario['infousuario'] = $datos_usuario;
				//array_push($final,$usuario);
				
				
				
				$datos_modulo = array();
				foreach ($datos_login as $datos) 
				{
					array_push($datos_modulo, array(
													"id" => $datos['M']['id'], 
													"nombre_modulo" => utf8_encode($datos['M']['nombre_modulo_sistema']),
													"modulo_sistema_id" => $datos['M']['modulo_sistema_id'],
													"descripcion_modulo" => utf8_encode($datos['M']['descripcion_modulo_sistema'])
												)
								);
				}
				
				array_push(
								$arreglo_json, array(
														'status' => 'OK',
														'datos_usuario' => $datos_usuario,
														'datos_modulo' => $datos_modulo,
													)
							);
				$user['datos'] = $arreglo_json;
				$this->response->type('json');
				$this->response->body(json_encode($user));
				return $this->response;
				
			}	
		}
	}
	
	public function getUserData ($username = null)
	{
		$this->loadModel('User');
		$user = $this->User->query(
									'SELECT U.* 
									FROM users U 
									WHERE U.username = "'.$username.'""'
									);
		
		
	}

	public function getDireccion($id_direccion)
	{
		$this->loadModel('User');
		$direccion = $this->User->query(
												"SELECT D.*
													FROM direccions D
													WHERE D.id = ".$id_direccion
													
										);
		
		if ($direccion[0]['D']['direccion_id'] == null)
		{
			return $direccion[0]['D']['nombre_direccion'];
		}
		else 
		{
			$nombre_dir = $direccion[0]['D']['nombre_direccion'].', '.$this->getDireccion($direccion[0]['D']['direccion_id']);
			return $nombre_dir;
		}
		
	}
	
	public function recoverPassword ($mail = null)
	{
		$error_inactivo = "Correo no registrado en el Sistema";
		$error_formato = "No se pudo reiniciar la clave por favor intente nuevamente";
		
		$final = array();
		
		$this->loadModel('User');
		
			$admin =  $this->User->find('all', array('fields' => array('count(id)'), 'conditions' => array('email' => $mail)));
			if ($admin[0][0]['count(id)'] != 0)
			{
				$user = $this->User->findByEmail($mail);
				$this->User->id = $user['User']['id'];
				
				$nueva_clave = $this->generateRandomString(10);
				
				$password = AuthComponent::password($nueva_clave);
				
				$query_u = 'update users set password = "'.$password.'"	WHERE id ='.$user['User']['id'];
				
				if ($this->User->query($query_u))
				{
					array_push($final, array("status" =>$error_formato));
				}	
				else 
				{
					array_push($final, array("status" =>"OK"));
					$this->sendEmail($nueva_clave,$mail);
				}	
				
			}
			else 
			{
				array_push($final, array("status" =>$error_inactivo));
			}
		
		$vend['datos'] = $final;
		$this->response->type('json');
		$this->response->body(json_encode($vend));
		return $this->response;
		
		
	}
	
}

?>
	